Video encoding, or video compression, is technique for reducing the quantity of data used to represent digital video images, usually comprising a sequence of video frames, and is a combination of spatial image compression and temporal motion compensation. Ordinarily, a video encoding scheme is applied to encode video data at a content provider (e.g., a video data server) and the encoded data is delivered to a client (e.g., a client computing device), where the delivered data is decoded and a corresponding image is displayed to a user. Typically, video encoding is based on a frame-by-frame comparison, where two adjacent video frames (e.g., a current frame and a next frame) are compared at a server and the determined video data differences, if any, are transmitted to a client configured to reconstruct the next frame. When substantial differences between the frames are detected, a video compression scheme must send more data to keep up with the larger number of pixels (data units comprising a video image) that are changing from the current frame to the next.
Further, in order to maintain an acceptable level of quality, conventional frame-by-frame analysis may involve more than just two adjacent frames (for example, analyzing sixteen frames at a time) which may require substantial processor and memory resources. Also, conventional frame-to-frame analysis may cause lags in image delivery, particularly in real-time video or computer game environment. If video content includes an explosion, flames, a flock of birds, or any other image with a great deal of high-frequency detail, image quality from the current frame to the next frame may decrease and ultimately may be compromised.